home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / util / JumboEnumSet.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  3.6 KB  |  240 lines

  1. package java.util;
  2.  
  3. class JumboEnumSet<E extends Enum<E>> extends EnumSet<E> {
  4.    private long[] elements;
  5.    private int size = 0;
  6.  
  7.    JumboEnumSet(Class<E> var1, Enum[] var2) {
  8.       super(var1, var2);
  9.       this.elements = new long[var2.length + 63 >>> 6];
  10.    }
  11.  
  12.    void addRange(E var1, E var2) {
  13.       int var3 = var1.ordinal() >>> 6;
  14.       int var4 = var2.ordinal() >>> 6;
  15.       if (var3 == var4) {
  16.          this.elements[var3] = -1L >>> var1.ordinal() - var2.ordinal() - 1 << var1.ordinal();
  17.       } else {
  18.          this.elements[var3] = -1L << var1.ordinal();
  19.  
  20.          for(int var5 = var3 + 1; var5 < var4; ++var5) {
  21.             this.elements[var5] = -1L;
  22.          }
  23.  
  24.          this.elements[var4] = -1L >>> 63 - var2.ordinal();
  25.       }
  26.  
  27.       this.size = var2.ordinal() - var1.ordinal() + 1;
  28.    }
  29.  
  30.    void addAll() {
  31.       for(int var1 = 0; var1 < this.elements.length; ++var1) {
  32.          this.elements[var1] = -1L;
  33.       }
  34.  
  35.       long[] var10000 = this.elements;
  36.       int var10001 = this.elements.length - 1;
  37.       var10000[var10001] >>>= -this.universe.length;
  38.       this.size = this.universe.length;
  39.    }
  40.  
  41.    void complement() {
  42.       for(int var1 = 0; var1 < this.elements.length; ++var1) {
  43.          this.elements[var1] = ~this.elements[var1];
  44.       }
  45.  
  46.       long[] var10000 = this.elements;
  47.       int var10001 = this.elements.length - 1;
  48.       var10000[var10001] &= -1L >>> -this.universe.length;
  49.       this.size = this.universe.length - this.size;
  50.    }
  51.  
  52.    public Iterator<E> iterator() {
  53.       return new EnumSetIterator(this);
  54.    }
  55.  
  56.    public int size() {
  57.       return this.size;
  58.    }
  59.  
  60.    public boolean isEmpty() {
  61.       return this.size == 0;
  62.    }
  63.  
  64.    public boolean contains(Object var1) {
  65.       if (var1 == null) {
  66.          return false;
  67.       } else {
  68.          Class var2 = var1.getClass();
  69.          if (var2 != this.elementType && var2.getSuperclass() != this.elementType) {
  70.             return false;
  71.          } else {
  72.             int var3 = ((Enum)var1).ordinal();
  73.             return (this.elements[var3 >>> 6] & 1L << var3) != 0L;
  74.          }
  75.       }
  76.    }
  77.  
  78.    public boolean add(E var1) {
  79.       this.typeCheck(var1);
  80.       int var2 = var1.ordinal();
  81.       int var3 = var2 >>> 6;
  82.       long var4 = this.elements[var3];
  83.       long[] var10000 = this.elements;
  84.       var10000[var3] |= 1L << var2;
  85.       boolean var6 = this.elements[var3] != var4;
  86.       if (var6) {
  87.          ++this.size;
  88.       }
  89.  
  90.       return var6;
  91.    }
  92.  
  93.    public boolean remove(Object var1) {
  94.       if (var1 == null) {
  95.          return false;
  96.       } else {
  97.          Class var2 = var1.getClass();
  98.          if (var2 != this.elementType && var2.getSuperclass() != this.elementType) {
  99.             return false;
  100.          } else {
  101.             int var3 = ((Enum)var1).ordinal();
  102.             int var4 = var3 >>> 6;
  103.             long var5 = this.elements[var4];
  104.             long[] var10000 = this.elements;
  105.             var10000[var4] &= ~(1L << var3);
  106.             boolean var7 = this.elements[var4] != var5;
  107.             if (var7) {
  108.                --this.size;
  109.             }
  110.  
  111.             return var7;
  112.          }
  113.       }
  114.    }
  115.  
  116.    public boolean containsAll(Collection<?> var1) {
  117.       if (!(var1 instanceof JumboEnumSet)) {
  118.          return super.containsAll(var1);
  119.       } else {
  120.          JumboEnumSet var2 = (JumboEnumSet)var1;
  121.          if (var2.elementType != this.elementType) {
  122.             return var2.isEmpty();
  123.          } else {
  124.             for(int var3 = 0; var3 < this.elements.length; ++var3) {
  125.                if ((var2.elements[var3] & ~this.elements[var3]) != 0L) {
  126.                   return false;
  127.                }
  128.             }
  129.  
  130.             return true;
  131.          }
  132.       }
  133.    }
  134.  
  135.    public boolean addAll(Collection<? extends E> var1) {
  136.       if (!(var1 instanceof JumboEnumSet)) {
  137.          return super.addAll(var1);
  138.       } else {
  139.          JumboEnumSet var2 = (JumboEnumSet)var1;
  140.          if (var2.elementType != this.elementType) {
  141.             if (var2.isEmpty()) {
  142.                return false;
  143.             } else {
  144.                throw new ClassCastException(var2.elementType + " != " + this.elementType);
  145.             }
  146.          } else {
  147.             for(int var3 = 0; var3 < this.elements.length; ++var3) {
  148.                long[] var10000 = this.elements;
  149.                var10000[var3] |= var2.elements[var3];
  150.             }
  151.  
  152.             return this.recalculateSize();
  153.          }
  154.       }
  155.    }
  156.  
  157.    public boolean removeAll(Collection<?> var1) {
  158.       if (!(var1 instanceof JumboEnumSet)) {
  159.          return super.removeAll(var1);
  160.       } else {
  161.          JumboEnumSet var2 = (JumboEnumSet)var1;
  162.          if (var2.elementType != this.elementType) {
  163.             return false;
  164.          } else {
  165.             for(int var3 = 0; var3 < this.elements.length; ++var3) {
  166.                long[] var10000 = this.elements;
  167.                var10000[var3] &= ~var2.elements[var3];
  168.             }
  169.  
  170.             return this.recalculateSize();
  171.          }
  172.       }
  173.    }
  174.  
  175.    public boolean retainAll(Collection<?> var1) {
  176.       if (!(var1 instanceof JumboEnumSet)) {
  177.          return super.retainAll(var1);
  178.       } else {
  179.          JumboEnumSet var2 = (JumboEnumSet)var1;
  180.          if (var2.elementType != this.elementType) {
  181.             boolean var4 = this.size != 0;
  182.             this.clear();
  183.             return var4;
  184.          } else {
  185.             for(int var3 = 0; var3 < this.elements.length; ++var3) {
  186.                long[] var10000 = this.elements;
  187.                var10000[var3] &= var2.elements[var3];
  188.             }
  189.  
  190.             return this.recalculateSize();
  191.          }
  192.       }
  193.    }
  194.  
  195.    public void clear() {
  196.       Arrays.fill(this.elements, 0L);
  197.       this.size = 0;
  198.    }
  199.  
  200.    public boolean equals(Object var1) {
  201.       if (!(var1 instanceof JumboEnumSet)) {
  202.          return super.equals(var1);
  203.       } else {
  204.          JumboEnumSet var2 = (JumboEnumSet)var1;
  205.          if (var2.elementType == this.elementType) {
  206.             return Arrays.equals(var2.elements, this.elements);
  207.          } else {
  208.             return this.size == 0 && var2.size == 0;
  209.          }
  210.       }
  211.    }
  212.  
  213.    private boolean recalculateSize() {
  214.       int var1 = this.size;
  215.       this.size = 0;
  216.  
  217.       for(long var5 : this.elements) {
  218.          this.size += Long.bitCount(var5);
  219.       }
  220.  
  221.       return this.size != var1;
  222.    }
  223.  
  224.    public EnumSet<E> clone() {
  225.       JumboEnumSet var1 = (JumboEnumSet)super.clone();
  226.       var1.elements = (long[])var1.elements.clone();
  227.       return var1;
  228.    }
  229.  
  230.    // $FF: synthetic method
  231.    static long[] access$000(JumboEnumSet var0) {
  232.       return var0.elements;
  233.    }
  234.  
  235.    // $FF: synthetic method
  236.    static int access$110(JumboEnumSet var0) {
  237.       return var0.size--;
  238.    }
  239. }
  240.